#ifndef _MEMORY_INFO_H_
#define _MEMORY_INFO_H_

#include <stdint.h>

#ifdef __x86_64__
#define MEM_ITEM_SIZE uint64_t
#elif defined(__i386__)
#define MEM_ITEM_SIZE uint32_t
#elif defined(__aarch64__)
#define MEM_ITEM_SIZE uint64_t
#elif defined(_WIN64)
#define MEM_ITEM_SIZE uint64_t
#elif defined(__arm__) && !defined(__aarch64__)
#define MEM_ITEM_SIZE uint32_t
#else
#define MEM_ITEM_SIZE uint32_t
#endif

struct MemoryInfo {
    MEM_ITEM_SIZE mem_total;    /* 总内存（KB） */
    MEM_ITEM_SIZE mem_free;     /* 剩余内存（KB） */
    MEM_ITEM_SIZE mem_avalible; /* 可使用内存（KB） */
    MEM_ITEM_SIZE mem_buffers;  /* 缓冲区（KB） */
    MEM_ITEM_SIZE mem_cached;   /* 缓存（KB） */
    MEM_ITEM_SIZE swap_total;   /* 总交换内存（KB） */
    MEM_ITEM_SIZE swap_free;    /* 剩余交换内存（KB） */
};

int GetMemoryInfo(struct MemoryInfo *info);

#endif /* _MEMORY_INFO_H_ */